<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>tinydtls: dtls.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">tinydtls
   &#160;<span id="projectnumber">0.8.2</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">dtls.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="dtls_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/* dtls -- a very basic DTLS implementation</span></div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * Copyright (C) 2011--2013 Olaf Bergmann &lt;bergmann@tzi.org&gt;</span></div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * Copyright (C) 2013 Hauke Mehrtens &lt;hauke@hauke-m.de&gt;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * Permission is hereby granted, free of charge, to any person</span></div>
<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * obtaining a copy of this software and associated documentation</span></div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * files (the &quot;Software&quot;), to deal in the Software without</span></div>
<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> * restriction, including without limitation the rights to use, copy,</span></div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> * modify, merge, publish, distribute, sublicense, and/or sell copies</span></div>
<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> * of the Software, and to permit persons to whom the Software is</span></div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * furnished to do so, subject to the following conditions:</span></div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * The above copyright notice and this permission notice shall be</span></div>
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> * included in all copies or substantial portions of the Software.</span></div>
<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> *</span></div>
<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,</span></div>
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div>
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND</span></div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS</span></div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN</span></div>
<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN</span></div>
<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE</span></div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"> * SOFTWARE.</span></div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment"> */</span></div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#ifndef _DTLS_DTLS_H_</span></div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define _DTLS_DTLS_H_</span></div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div>
<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="t__list_8h.html">t_list.h</a>&quot;</span></div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="state_8h.html">state.h</a>&quot;</span></div>
<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="peer_8h.html">peer.h</a>&quot;</span></div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#ifndef WITH_CONTIKI</span></div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#include &quot;<a class="code" href="uthash_8h.html">uthash.h</a>&quot;</span></div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="t__list_8h.html">t_list.h</a>&quot;</span></div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="alert_8h.html">alert.h</a>&quot;</span></div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="crypto_8h.html">crypto.h</a>&quot;</span></div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="hmac_8h.html">hmac.h</a>&quot;</span></div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;</div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="global_8h.html">global.h</a>&quot;</span></div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="dtls__time_8h.html">dtls_time.h</a>&quot;</span></div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#ifndef DTLSv12</span></div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DTLS_VERSION 0xfeff </span><span class="comment">/* DTLS v1.1 */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#else</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="dtls_8h.html#af0c44db3bf3a6a52e9ed271218daeaa6">   56</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DTLS_VERSION 0xfefd </span><span class="comment">/* DTLS v1.2 */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="dtls_8h.html#a36eda3add5e2d12a3b5e2b6fe7038e01">   59</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="dtls_8h.html#a36eda3add5e2d12a3b5e2b6fe7038e01">dtls_credentials_type_t</a> {</div>
<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="dtls_8h.html#a36eda3add5e2d12a3b5e2b6fe7038e01a1d64c04f18b370cf742595dc91098db4">   60</a></span>&#160;  <a class="code" href="dtls_8h.html#a36eda3add5e2d12a3b5e2b6fe7038e01a53b5588e3c87ce19b1340baf193d130c">DTLS_PSK_HINT</a>, <a class="code" href="dtls_8h.html#a36eda3add5e2d12a3b5e2b6fe7038e01adb8cac45614b2bc4e66970b64043cfc2">DTLS_PSK_IDENTITY</a>, <a class="code" href="dtls_8h.html#a36eda3add5e2d12a3b5e2b6fe7038e01a1d64c04f18b370cf742595dc91098db4">DTLS_PSK_KEY</a></div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;} <a class="code" href="dtls_8h.html#a36eda3add5e2d12a3b5e2b6fe7038e01">dtls_credentials_type_t</a>;</div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;</div>
<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="structdtls__ecdsa__key__t.html">   63</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structdtls__ecdsa__key__t.html">dtls_ecdsa_key_t</a> {</div>
<div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="structdtls__ecdsa__key__t.html#ad78834cca7158114bd78d3d0acb4a548">   64</a></span>&#160;  <a class="code" href="crypto_8h.html#a3710d42871d602387a5147c05bf9f1ef">dtls_ecdh_curve</a> <a class="code" href="structdtls__ecdsa__key__t.html#ad78834cca7158114bd78d3d0acb4a548">curve</a>;</div>
<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="structdtls__ecdsa__key__t.html#a91769609f44590f193d726187ab366de">   65</a></span>&#160;  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *<a class="code" href="structdtls__ecdsa__key__t.html#a91769609f44590f193d726187ab366de">priv_key</a>;    </div>
<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="structdtls__ecdsa__key__t.html#aa54efc762737c1b94eaebae1262d4221">   66</a></span>&#160;  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *<a class="code" href="structdtls__ecdsa__key__t.html#aa54efc762737c1b94eaebae1262d4221">pub_key_x</a>;   </div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="line" href="structdtls__ecdsa__key__t.html#aaceb7ea4b4f9e74fb2ec85c49746132f">   67</a></span>&#160;  <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *<a class="code" href="structdtls__ecdsa__key__t.html#aaceb7ea4b4f9e74fb2ec85c49746132f">pub_key_y</a>;   </div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;} <a class="code" href="dtls_8h.html#a472601639fcded4630fbd087f986ad10">dtls_ecdsa_key_t</a>;</div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div>
<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="dtls_8h.html#a44ec206b1d84aa3d83281a92ed7cc238">   71</a></span>&#160;<span class="preprocessor">#define DTLS_COOKIE_SECRET_LENGTH 12</span></div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="keyword">struct </span><a class="code" href="structdtls__context__t.html">dtls_context_t</a>;</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;</div>
<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="structdtls__handler__t.html">   84</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="structdtls__handler__t.html#a161ad99d77bd3b963bcd473eb3cbefe2">   99</a></span>&#160;  int (*write)(<span class="keyword">struct </span><a class="code" href="structdtls__context__t.html">dtls_context_t</a> *ctx, </div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;           <a class="code" href="structsession__t.html">session_t</a> *session, <a class="code" href="global_8h.html#adde6aaee8457bee49c2a92621fe22b79">uint8</a> *buf, <span class="keywordtype">size_t</span> len);</div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div>
<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="structdtls__handler__t.html#a48f28d381286b493fe6dd8eab5cbaa88">  114</a></span>&#160;  int (*read)(<span class="keyword">struct </span><a class="code" href="structdtls__context__t.html">dtls_context_t</a> *ctx, </div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;           <a class="code" href="structsession__t.html">session_t</a> *session, <a class="code" href="global_8h.html#adde6aaee8457bee49c2a92621fe22b79">uint8</a> *buf, <span class="keywordtype">size_t</span> len);</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div>
<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="structdtls__handler__t.html#aae2db3733c5f0a0eea9a635490bdfe59">  129</a></span>&#160;  int (*event)(<span class="keyword">struct </span><a class="code" href="structdtls__context__t.html">dtls_context_t</a> *ctx, <a class="code" href="structsession__t.html">session_t</a> *session, </div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;        <a class="code" href="alert_8h.html#ab6264d1b950719f1c2e00b122cad871f">dtls_alert_level_t</a> level, <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> code);</div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="preprocessor">#ifdef DTLS_PSK</span></div>
<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;  int (*get_psk_info)(<span class="keyword">struct </span><a class="code" href="structdtls__context__t.html">dtls_context_t</a> *ctx,</div>
<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;              <span class="keyword">const</span> <a class="code" href="structsession__t.html">session_t</a> *session,</div>
<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;              <a class="code" href="dtls_8h.html#a36eda3add5e2d12a3b5e2b6fe7038e01">dtls_credentials_type_t</a> type,</div>
<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;              <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *desc, <span class="keywordtype">size_t</span> desc_len,</div>
<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;              <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *result, <span class="keywordtype">size_t</span> result_length);</div>
<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* DTLS_PSK */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="preprocessor">#ifdef DTLS_ECC</span></div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;  int (*get_ecdsa_key)(<span class="keyword">struct </span><a class="code" href="structdtls__context__t.html">dtls_context_t</a> *ctx, </div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;               <span class="keyword">const</span> <a class="code" href="structsession__t.html">session_t</a> *session,</div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;               <span class="keyword">const</span> <a class="code" href="structdtls__ecdsa__key__t.html">dtls_ecdsa_key_t</a> **result);</div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;  int (*verify_ecdsa_key)(<span class="keyword">struct </span><a class="code" href="structdtls__context__t.html">dtls_context_t</a> *ctx, </div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;              <span class="keyword">const</span> <a class="code" href="structsession__t.html">session_t</a> *session,</div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;              <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *other_pub_x,</div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;              <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *other_pub_y,</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;              <span class="keywordtype">size_t</span> key_size);</div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* DTLS_ECC */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;<span class="preprocessor"></span>} <a class="code" href="structdtls__handler__t.html">dtls_handler_t</a>;</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;</div>
<div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="structdtls__context__t.html">  223</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structdtls__context__t.html">dtls_context_t</a> {</div>
<div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="structdtls__context__t.html#adb7dc6a53a7e00f2c4bbf726973e002f">  224</a></span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structdtls__context__t.html#adb7dc6a53a7e00f2c4bbf726973e002f">cookie_secret</a>[<a class="code" href="dtls_8h.html#a44ec206b1d84aa3d83281a92ed7cc238">DTLS_COOKIE_SECRET_LENGTH</a>];</div>
<div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="structdtls__context__t.html#a3f26099dbb3588ae9a86d26f69ec08f8">  225</a></span>&#160;  <a class="code" href="group__clock.html#ga6e6c13e871b82d881a01d1bc8df69d23">clock_time_t</a> <a class="code" href="structdtls__context__t.html#a3f26099dbb3588ae9a86d26f69ec08f8">cookie_secret_age</a>; </div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;<span class="preprocessor">#ifndef WITH_CONTIKI</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="structdtls__context__t.html#a417fa8ac04478292f0539d2da0fec088">  228</a></span>&#160;<span class="preprocessor"></span>  <a class="code" href="structdtls__peer__t.html">dtls_peer_t</a> *<a class="code" href="structdtls__context__t.html#a417fa8ac04478292f0539d2da0fec088">peers</a>;       </div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;<span class="preprocessor">#else </span><span class="comment">/* WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;<span class="preprocessor"></span>  <a class="code" href="structdtls__context__t.html#adf4e86be64bd4a07936ddbba5f6fa6af">LIST_STRUCT</a>(<a class="code" href="structdtls__context__t.html#a417fa8ac04478292f0539d2da0fec088">peers</a>);</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;  <span class="keyword">struct </span>etimer retransmit_timer; </div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;  <a class="code" href="structdtls__context__t.html#adf4e86be64bd4a07936ddbba5f6fa6af">LIST_STRUCT</a>(sendqueue);   </div>
<div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="structdtls__context__t.html#ab37722ec6b82dd3120827812f212a51e">  237</a></span>&#160;  <span class="keywordtype">void</span> *<a class="code" href="structdtls__context__t.html#ab37722ec6b82dd3120827812f212a51e">app</a>;            </div>
<div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="structdtls__context__t.html#a460737bda0d200538c00ef7877b339cd">  239</a></span>&#160;  <a class="code" href="structdtls__handler__t.html">dtls_handler_t</a> *<a class="code" href="structdtls__context__t.html#a460737bda0d200538c00ef7877b339cd">h</a>;        </div>
<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="structdtls__context__t.html#ad6facbcd3c19ac8e1c79b1664dcf2434">  241</a></span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="structdtls__context__t.html#ad6facbcd3c19ac8e1c79b1664dcf2434">readbuf</a>[<a class="code" href="global_8h.html#acdbfba15eb1a5692e177d582b4ca1583">DTLS_MAX_BUF</a>];</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;} <a class="code" href="dtls_8h.html#a407c66c58bfc87651714de4103bee135">dtls_context_t</a>;</div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;<span class="keywordtype">void</span> <a class="code" href="dtls_8h.html#ac203466e393ac9030d405c8f0496e9cd">dtls_init</a>();</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;<a class="code" href="structdtls__context__t.html">dtls_context_t</a> *<a class="code" href="dtls_8h.html#a11f53d301448aa8f1dbcfaf77441bd9c">dtls_new_context</a>(<span class="keywordtype">void</span> *app_data);</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;</div>
<div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;<span class="keywordtype">void</span> <a class="code" href="dtls_8h.html#a3171c099d25ed29e31326526b8e1de84">dtls_free_context</a>(<a class="code" href="structdtls__context__t.html">dtls_context_t</a> *ctx);</div>
<div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;</div>
<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="dtls_8h.html#a89611ebcb02bb3bbf56dfb583937586e">  258</a></span>&#160;<span class="preprocessor">#define dtls_set_app_data(CTX,DATA) ((CTX)-&gt;app = (DATA))</span></div>
<div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="dtls_8h.html#a95f7eb485bb814aa308e2612681176d9">  259</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define dtls_get_app_data(CTX) ((CTX)-&gt;app)</span></div>
<div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00262"></a><span class="lineno"><a class="line" href="dtls_8h.html#ab0e3223c87b79e4946b19538b24634da">  262</a></span>&#160;<span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="dtls_8h.html#ab0e3223c87b79e4946b19538b24634da">dtls_set_handler</a>(<a class="code" href="structdtls__context__t.html">dtls_context_t</a> *ctx, <a class="code" href="structdtls__handler__t.html">dtls_handler_t</a> *h) {</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;  ctx-&gt;<a class="code" href="structdtls__context__t.html#a460737bda0d200538c00ef7877b339cd">h</a> = h;</div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;}</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;</div>
<div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;<span class="keywordtype">int</span> <a class="code" href="dtls_8h.html#a187f5e145bb869a732fbed426929a4e9">dtls_connect</a>(<a class="code" href="structdtls__context__t.html">dtls_context_t</a> *ctx, <span class="keyword">const</span> <a class="code" href="structsession__t.html">session_t</a> *dst);</div>
<div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;</div>
<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;<span class="keywordtype">int</span> <a class="code" href="dtls_8h.html#ad60bf1197fa1a074f91aed508cfefa62">dtls_connect_peer</a>(<a class="code" href="structdtls__context__t.html">dtls_context_t</a> *ctx, <a class="code" href="structdtls__peer__t.html">dtls_peer_t</a> *peer);</div>
<div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;</div>
<div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;<span class="keywordtype">int</span> <a class="code" href="dtls_8h.html#aa90f5eb6954137d5e098e29143c2586a">dtls_close</a>(<a class="code" href="structdtls__context__t.html">dtls_context_t</a> *ctx, <span class="keyword">const</span> <a class="code" href="structsession__t.html">session_t</a> *remote);</div>
<div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div>
<div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;<span class="keywordtype">int</span> <a class="code" href="dtls_8h.html#a5676a0ceeeabd1ec38d378212f7af4a1">dtls_renegotiate</a>(<a class="code" href="structdtls__context__t.html">dtls_context_t</a> *ctx, <span class="keyword">const</span> <a class="code" href="structsession__t.html">session_t</a> *dst);</div>
<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;</div>
<div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;<span class="keywordtype">int</span> <a class="code" href="dtls_8h.html#a4743f51c3197d290fc9a88e1f3a64928">dtls_write</a>(<span class="keyword">struct</span> <a class="code" href="structdtls__context__t.html">dtls_context_t</a> *ctx, <a class="code" href="structsession__t.html">session_t</a> *session, </div>
<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;           <a class="code" href="global_8h.html#adde6aaee8457bee49c2a92621fe22b79">uint8</a> *buf, <span class="keywordtype">size_t</span> len);</div>
<div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;</div>
<div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;<span class="keywordtype">void</span> <a class="code" href="dtls_8h.html#ab50d1ee589e91d07032d0a65768dee82">dtls_check_retransmit</a>(<a class="code" href="structdtls__context__t.html">dtls_context_t</a> *context, <a class="code" href="group__clock.html#ga6e6c13e871b82d881a01d1bc8df69d23">clock_time_t</a> *next);</div>
<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;</div>
<div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="dtls_8h.html#a09e4f571633bdb724236ac68459715b6">  323</a></span>&#160;<span class="preprocessor">#define DTLS_COOKIE_LENGTH 16</span></div>
<div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="dtls_8h.html#a3114c327a12e3850e97c4cf8a0cc5c9d">  325</a></span>&#160;<span class="preprocessor">#define DTLS_CT_CHANGE_CIPHER_SPEC 20</span></div>
<div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="dtls_8h.html#af8ce2230240b6d3c36b216ef459baff1">  326</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DTLS_CT_ALERT              21</span></div>
<div class="line"><a name="l00327"></a><span class="lineno"><a class="line" href="dtls_8h.html#a76965db5ec449b3c8a9a54c24a4d45dc">  327</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DTLS_CT_HANDSHAKE          22</span></div>
<div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="dtls_8h.html#a2e3ff1e96b8b7db8a3648beba35bfd0c">  328</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DTLS_CT_APPLICATION_DATA   23</span></div>
<div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00331"></a><span class="lineno"><a class="line" href="dtls_8h.html#ad09246453a4dabd919c7541484046a87">  331</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="dtls_8h.html#ad09246453a4dabd919c7541484046a87">__attribute__</a>((__packed__)) {</div>
<div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;  <a class="code" href="global_8h.html#adde6aaee8457bee49c2a92621fe22b79">uint8</a> content_type;       </div>
<div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;  <a class="code" href="global_8h.html#a5e90b30856b81913af89565b55751da5">uint16</a> version;       </div>
<div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;  <a class="code" href="global_8h.html#a5e90b30856b81913af89565b55751da5">uint16</a> epoch;             </div>
<div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;  <a class="code" href="global_8h.html#a0749f1df578b26eccab986b0d8abaa56">uint48</a> sequence_number;       </div>
<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;  <a class="code" href="global_8h.html#a5e90b30856b81913af89565b55751da5">uint16</a> length;        </div>
<div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;  <span class="comment">/* fragment */</span></div>
<div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="dtls_8h.html#a81936df7abb2c16aa897e3018aa24399">  338</a></span>&#160;} <a class="code" href="dtls_8h.html#a81936df7abb2c16aa897e3018aa24399">dtls_record_header_t</a>;</div>
<div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;</div>
<div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;<span class="comment">/* Handshake types */</span></div>
<div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;</div>
<div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="dtls_8h.html#a66566dfd30b8ab388c08b4cde6c667cc">  342</a></span>&#160;<span class="preprocessor">#define DTLS_HT_HELLO_REQUEST        0</span></div>
<div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="dtls_8h.html#a25f0afef67a1fd8d9e3e61074d11e2f5">  343</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DTLS_HT_CLIENT_HELLO         1</span></div>
<div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="dtls_8h.html#ad5882a5ff4073ffefa266bb2c4a1ee3c">  344</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DTLS_HT_SERVER_HELLO         2</span></div>
<div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="dtls_8h.html#ab04f98f1863c785fabd97925c9746f7d">  345</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DTLS_HT_HELLO_VERIFY_REQUEST 3</span></div>
<div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="dtls_8h.html#a55a0a899d7f151e7f53b76fe8a82c10e">  346</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DTLS_HT_CERTIFICATE         11</span></div>
<div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="dtls_8h.html#aab327e17614cf2902c5fc6169466613f">  347</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DTLS_HT_SERVER_KEY_EXCHANGE 12</span></div>
<div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="dtls_8h.html#a6f49d7b0a6e9190d71d51b1ee9ff3bd5">  348</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DTLS_HT_CERTIFICATE_REQUEST 13</span></div>
<div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="dtls_8h.html#a44399f223a3e1c8a8bf3fc638a06a4d7">  349</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DTLS_HT_SERVER_HELLO_DONE   14</span></div>
<div class="line"><a name="l00350"></a><span class="lineno"><a class="line" href="dtls_8h.html#a9abc650dd8339a227ddd165ede9350d0">  350</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DTLS_HT_CERTIFICATE_VERIFY  15</span></div>
<div class="line"><a name="l00351"></a><span class="lineno"><a class="line" href="dtls_8h.html#a577885c74492a460729a451f33a894c4">  351</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DTLS_HT_CLIENT_KEY_EXCHANGE 16</span></div>
<div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="dtls_8h.html#a16b49d03e041d43b60e1b7bacf35daad">  352</a></span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define DTLS_HT_FINISHED            20</span></div>
<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="dtls_8h.html#ad09246453a4dabd919c7541484046a87">__attribute__</a>((__packed__)) {</div>
<div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;  <a class="code" href="global_8h.html#adde6aaee8457bee49c2a92621fe22b79">uint8</a> msg_type; </div>
<div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;  <a class="code" href="global_8h.html#aabc56baaf04f922a1ea0dda7691fec0a">uint24</a> length;  </div>
<div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;  <a class="code" href="global_8h.html#a5e90b30856b81913af89565b55751da5">uint16</a> message_seq;   </div>
<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;  <a class="code" href="global_8h.html#aabc56baaf04f922a1ea0dda7691fec0a">uint24</a> fragment_offset;   </div>
<div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;  <a class="code" href="global_8h.html#aabc56baaf04f922a1ea0dda7691fec0a">uint24</a> fragment_length;   </div>
<div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;  <span class="comment">/* body */</span></div>
<div class="line"><a name="l00362"></a><span class="lineno"><a class="line" href="dtls_8h.html#a5c6625ffcf61189392768253e8919a45">  362</a></span>&#160;} <a class="code" href="dtls_8h.html#a5c6625ffcf61189392768253e8919a45">dtls_handshake_header_t</a>;</div>
<div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;</div>
<div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="dtls_8h.html#ad09246453a4dabd919c7541484046a87">__attribute__</a>((__packed__)) {</div>
<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;  <a class="code" href="global_8h.html#a5e90b30856b81913af89565b55751da5">uint16</a> version;     </div>
<div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;  <a class="code" href="global_8h.html#ab27072920285996a3e16d2e5e3d366be">uint32</a> gmt_random;      </div>
<div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> random[28]; </div>
<div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;  <span class="comment">/* session id (up to 32 bytes) */</span></div>
<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;  <span class="comment">/* cookie (up to 32 bytes) */</span></div>
<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;  <span class="comment">/* cipher suite (2 to 2^16 -1 bytes) */</span></div>
<div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;  <span class="comment">/* compression method */</span></div>
<div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="dtls_8h.html#aa9ebc35a08295c2ae09d4248ba8e6456">  373</a></span>&#160;} <a class="code" href="dtls_8h.html#aa9ebc35a08295c2ae09d4248ba8e6456">dtls_client_hello_t</a>;</div>
<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;</div>
<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="dtls_8h.html#ad09246453a4dabd919c7541484046a87">__attribute__</a>((__packed__)) {</div>
<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;  <a class="code" href="global_8h.html#a5e90b30856b81913af89565b55751da5">uint16</a> version;       </div>
<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;  <a class="code" href="global_8h.html#adde6aaee8457bee49c2a92621fe22b79">uint8</a> cookie_length;  </div>
<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;  <a class="code" href="global_8h.html#adde6aaee8457bee49c2a92621fe22b79">uint8</a> cookie[];       </div>
<div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="dtls_8h.html#abd61d526ef995e63a6debfd8ddda9e98">  380</a></span>&#160;} <a class="code" href="dtls_8h.html#abd61d526ef995e63a6debfd8ddda9e98">dtls_hello_verify_t</a>;  </div>
<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;</div>
<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;<span class="preprocessor">#if 0</span></div>
<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;<span class="keywordtype">int</span> dtls_record_read(<a class="code" href="state_8h.html#aea0e57fd5b857535960534b53361aa35">dtls_state_t</a> *state, <a class="code" href="global_8h.html#adde6aaee8457bee49c2a92621fe22b79">uint8</a> *msg, <span class="keywordtype">int</span> msglen);</div>
<div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;<span class="keywordtype">int</span> <a class="code" href="dtls_8h.html#ae272fea7269714fe7a67d6da64961731">dtls_handle_message</a>(<a class="code" href="structdtls__context__t.html">dtls_context_t</a> *ctx, <a class="code" href="structsession__t.html">session_t</a> *session,</div>
<div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;            <a class="code" href="global_8h.html#adde6aaee8457bee49c2a92621fe22b79">uint8</a> *msg, <span class="keywordtype">int</span> msglen);</div>
<div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;</div>
<div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;<a class="code" href="structdtls__peer__t.html">dtls_peer_t</a> *<a class="code" href="dtls_8h.html#a3fd062108e5d0f48627ae644546824a6">dtls_get_peer</a>(<span class="keyword">const</span> <a class="code" href="structdtls__context__t.html">dtls_context_t</a> *context,</div>
<div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;               <span class="keyword">const</span> <a class="code" href="structsession__t.html">session_t</a> *session);</div>
<div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;</div>
<div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;</div>
<div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* _DTLS_DTLS_H_ */</span><span class="preprocessor"></span></div>
<div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;<span class="preprocessor"></span></div>
<div class="ttc" id="structdtls__ecdsa__key__t_html_ad78834cca7158114bd78d3d0acb4a548"><div class="ttname"><a href="structdtls__ecdsa__key__t.html#ad78834cca7158114bd78d3d0acb4a548">dtls_ecdsa_key_t::curve</a></div><div class="ttdeci">dtls_ecdh_curve curve</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00064">dtls.h:64</a></div></div>
<div class="ttc" id="structdtls__context__t_html_adb7dc6a53a7e00f2c4bbf726973e002f"><div class="ttname"><a href="structdtls__context__t.html#adb7dc6a53a7e00f2c4bbf726973e002f">dtls_context_t::cookie_secret</a></div><div class="ttdeci">unsigned char cookie_secret[DTLS_COOKIE_SECRET_LENGTH]</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00224">dtls.h:224</a></div></div>
<div class="ttc" id="dtls_8h_html_a3171c099d25ed29e31326526b8e1de84"><div class="ttname"><a href="dtls_8h.html#a3171c099d25ed29e31326526b8e1de84">dtls_free_context</a></div><div class="ttdeci">void dtls_free_context(dtls_context_t *ctx)</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8c_source.html#l03802">dtls.c:3802</a></div></div>
<div class="ttc" id="structdtls__ecdsa__key__t_html_a91769609f44590f193d726187ab366de"><div class="ttname"><a href="structdtls__ecdsa__key__t.html#a91769609f44590f193d726187ab366de">dtls_ecdsa_key_t::priv_key</a></div><div class="ttdeci">const unsigned char * priv_key</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00065">dtls.h:65</a></div></div>
<div class="ttc" id="t__list_8h_html"><div class="ttname"><a href="t__list_8h.html">t_list.h</a></div><div class="ttdoc">Wrappers for list structures and functions. </div></div>
<div class="ttc" id="structdtls__context__t_html"><div class="ttname"><a href="structdtls__context__t.html">dtls_context_t</a></div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00223">dtls.h:223</a></div></div>
<div class="ttc" id="dtls_8h_html_a11f53d301448aa8f1dbcfaf77441bd9c"><div class="ttname"><a href="dtls_8h.html#a11f53d301448aa8f1dbcfaf77441bd9c">dtls_new_context</a></div><div class="ttdeci">dtls_context_t * dtls_new_context(void *app_data)</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8c_source.html#l03740">dtls.c:3740</a></div></div>
<div class="ttc" id="structdtls__context__t_html_adf4e86be64bd4a07936ddbba5f6fa6af"><div class="ttname"><a href="structdtls__context__t.html#adf4e86be64bd4a07936ddbba5f6fa6af">dtls_context_t::LIST_STRUCT</a></div><div class="ttdeci">LIST_STRUCT(sendqueue)</div></div>
<div class="ttc" id="state_8h_html_aea0e57fd5b857535960534b53361aa35"><div class="ttname"><a href="state_8h.html#aea0e57fd5b857535960534b53361aa35">dtls_state_t</a></div><div class="ttdeci">dtls_state_t</div><div class="ttdef"><b>Definition:</b> <a href="state_8h_source.html#l00040">state.h:40</a></div></div>
<div class="ttc" id="structsession__t_html"><div class="ttname"><a href="structsession__t.html">session_t</a></div><div class="ttdef"><b>Definition:</b> <a href="session_8h_source.html#l00049">session.h:49</a></div></div>
<div class="ttc" id="crypto_8h_html"><div class="ttname"><a href="crypto_8h.html">crypto.h</a></div></div>
<div class="ttc" id="dtls_8h_html_a3fd062108e5d0f48627ae644546824a6"><div class="ttname"><a href="dtls_8h.html#a3fd062108e5d0f48627ae644546824a6">dtls_get_peer</a></div><div class="ttdeci">dtls_peer_t * dtls_get_peer(const dtls_context_t *context, const session_t *session)</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8c_source.html#l00212">dtls.c:212</a></div></div>
<div class="ttc" id="dtls_8h_html_a81936df7abb2c16aa897e3018aa24399"><div class="ttname"><a href="dtls_8h.html#a81936df7abb2c16aa897e3018aa24399">dtls_record_header_t</a></div><div class="ttdeci">dtls_record_header_t</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00338">dtls.h:338</a></div></div>
<div class="ttc" id="dtls_8h_html_a36eda3add5e2d12a3b5e2b6fe7038e01adb8cac45614b2bc4e66970b64043cfc2"><div class="ttname"><a href="dtls_8h.html#a36eda3add5e2d12a3b5e2b6fe7038e01adb8cac45614b2bc4e66970b64043cfc2">DTLS_PSK_IDENTITY</a></div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00060">dtls.h:60</a></div></div>
<div class="ttc" id="alert_8h_html_ab6264d1b950719f1c2e00b122cad871f"><div class="ttname"><a href="alert_8h.html#ab6264d1b950719f1c2e00b122cad871f">dtls_alert_level_t</a></div><div class="ttdeci">dtls_alert_level_t</div><div class="ttdef"><b>Definition:</b> <a href="alert_8h_source.html#l00034">alert.h:34</a></div></div>
<div class="ttc" id="dtls_8h_html_a36eda3add5e2d12a3b5e2b6fe7038e01a1d64c04f18b370cf742595dc91098db4"><div class="ttname"><a href="dtls_8h.html#a36eda3add5e2d12a3b5e2b6fe7038e01a1d64c04f18b370cf742595dc91098db4">DTLS_PSK_KEY</a></div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00060">dtls.h:60</a></div></div>
<div class="ttc" id="structdtls__context__t_html_a3f26099dbb3588ae9a86d26f69ec08f8"><div class="ttname"><a href="structdtls__context__t.html#a3f26099dbb3588ae9a86d26f69ec08f8">dtls_context_t::cookie_secret_age</a></div><div class="ttdeci">clock_time_t cookie_secret_age</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00225">dtls.h:225</a></div></div>
<div class="ttc" id="alert_8h_html"><div class="ttname"><a href="alert_8h.html">alert.h</a></div><div class="ttdoc">DTLS alert protocol. </div></div>
<div class="ttc" id="global_8h_html"><div class="ttname"><a href="global_8h.html">global.h</a></div></div>
<div class="ttc" id="dtls_8h_html_a36eda3add5e2d12a3b5e2b6fe7038e01"><div class="ttname"><a href="dtls_8h.html#a36eda3add5e2d12a3b5e2b6fe7038e01">dtls_credentials_type_t</a></div><div class="ttdeci">dtls_credentials_type_t</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00059">dtls.h:59</a></div></div>
<div class="ttc" id="structdtls__context__t_html_a417fa8ac04478292f0539d2da0fec088"><div class="ttname"><a href="structdtls__context__t.html#a417fa8ac04478292f0539d2da0fec088">dtls_context_t::peers</a></div><div class="ttdeci">dtls_peer_t * peers</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00228">dtls.h:228</a></div></div>
<div class="ttc" id="group__clock_html_ga6e6c13e871b82d881a01d1bc8df69d23"><div class="ttname"><a href="group__clock.html#ga6e6c13e871b82d881a01d1bc8df69d23">clock_time_t</a></div><div class="ttdeci">uint32_t clock_time_t</div><div class="ttdef"><b>Definition:</b> <a href="dtls__time_8h_source.html#l00055">dtls_time.h:55</a></div></div>
<div class="ttc" id="global_8h_html_a0749f1df578b26eccab986b0d8abaa56"><div class="ttname"><a href="global_8h.html#a0749f1df578b26eccab986b0d8abaa56">uint48</a></div><div class="ttdeci">unsigned char uint48[6]</div><div class="ttdef"><b>Definition:</b> <a href="global_8h_source.html#l00051">global.h:51</a></div></div>
<div class="ttc" id="dtls_8h_html_ab0e3223c87b79e4946b19538b24634da"><div class="ttname"><a href="dtls_8h.html#ab0e3223c87b79e4946b19538b24634da">dtls_set_handler</a></div><div class="ttdeci">static void dtls_set_handler(dtls_context_t *ctx, dtls_handler_t *h)</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00262">dtls.h:262</a></div></div>
<div class="ttc" id="peer_8h_html"><div class="ttname"><a href="peer_8h.html">peer.h</a></div><div class="ttdoc">information about peers in a DTLS session </div></div>
<div class="ttc" id="structdtls__context__t_html_a460737bda0d200538c00ef7877b339cd"><div class="ttname"><a href="structdtls__context__t.html#a460737bda0d200538c00ef7877b339cd">dtls_context_t::h</a></div><div class="ttdeci">dtls_handler_t * h</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00239">dtls.h:239</a></div></div>
<div class="ttc" id="dtls_8h_html_ad09246453a4dabd919c7541484046a87"><div class="ttname"><a href="dtls_8h.html#ad09246453a4dabd919c7541484046a87">__attribute__</a></div><div class="ttdeci">struct __attribute__((__packed__))</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00331">dtls.h:331</a></div></div>
<div class="ttc" id="global_8h_html_aabc56baaf04f922a1ea0dda7691fec0a"><div class="ttname"><a href="global_8h.html#aabc56baaf04f922a1ea0dda7691fec0a">uint24</a></div><div class="ttdeci">unsigned char uint24[3]</div><div class="ttdef"><b>Definition:</b> <a href="global_8h_source.html#l00049">global.h:49</a></div></div>
<div class="ttc" id="dtls_8h_html_a472601639fcded4630fbd087f986ad10"><div class="ttname"><a href="dtls_8h.html#a472601639fcded4630fbd087f986ad10">dtls_ecdsa_key_t</a></div><div class="ttdeci">struct dtls_ecdsa_key_t dtls_ecdsa_key_t</div></div>
<div class="ttc" id="dtls__time_8h_html"><div class="ttname"><a href="dtls__time_8h.html">dtls_time.h</a></div><div class="ttdoc">Clock Handling. </div></div>
<div class="ttc" id="hmac_8h_html"><div class="ttname"><a href="hmac_8h.html">hmac.h</a></div></div>
<div class="ttc" id="dtls_8h_html_a5c6625ffcf61189392768253e8919a45"><div class="ttname"><a href="dtls_8h.html#a5c6625ffcf61189392768253e8919a45">dtls_handshake_header_t</a></div><div class="ttdeci">dtls_handshake_header_t</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00362">dtls.h:362</a></div></div>
<div class="ttc" id="structdtls__context__t_html_ad6facbcd3c19ac8e1c79b1664dcf2434"><div class="ttname"><a href="structdtls__context__t.html#ad6facbcd3c19ac8e1c79b1664dcf2434">dtls_context_t::readbuf</a></div><div class="ttdeci">unsigned char readbuf[DTLS_MAX_BUF]</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00241">dtls.h:241</a></div></div>
<div class="ttc" id="structdtls__ecdsa__key__t_html_aaceb7ea4b4f9e74fb2ec85c49746132f"><div class="ttname"><a href="structdtls__ecdsa__key__t.html#aaceb7ea4b4f9e74fb2ec85c49746132f">dtls_ecdsa_key_t::pub_key_y</a></div><div class="ttdeci">const unsigned char * pub_key_y</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00067">dtls.h:67</a></div></div>
<div class="ttc" id="crypto_8h_html_a3710d42871d602387a5147c05bf9f1ef"><div class="ttname"><a href="crypto_8h.html#a3710d42871d602387a5147c05bf9f1ef">dtls_ecdh_curve</a></div><div class="ttdeci">dtls_ecdh_curve</div><div class="ttdef"><b>Definition:</b> <a href="crypto_8h_source.html#l00065">crypto.h:65</a></div></div>
<div class="ttc" id="dtls_8h_html_a407c66c58bfc87651714de4103bee135"><div class="ttname"><a href="dtls_8h.html#a407c66c58bfc87651714de4103bee135">dtls_context_t</a></div><div class="ttdeci">struct dtls_context_t dtls_context_t</div></div>
<div class="ttc" id="global_8h_html_adde6aaee8457bee49c2a92621fe22b79"><div class="ttname"><a href="global_8h.html#adde6aaee8457bee49c2a92621fe22b79">uint8</a></div><div class="ttdeci">unsigned char uint8</div><div class="ttdef"><b>Definition:</b> <a href="global_8h_source.html#l00047">global.h:47</a></div></div>
<div class="ttc" id="structdtls__peer__t_html"><div class="ttname"><a href="structdtls__peer__t.html">dtls_peer_t</a></div><div class="ttdef"><b>Definition:</b> <a href="peer_8h_source.html#l00052">peer.h:52</a></div></div>
<div class="ttc" id="dtls_8h_html_ac203466e393ac9030d405c8f0496e9cd"><div class="ttname"><a href="dtls_8h.html#ac203466e393ac9030d405c8f0496e9cd">dtls_init</a></div><div class="ttdeci">void dtls_init()</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8c_source.html#l00163">dtls.c:163</a></div></div>
<div class="ttc" id="structdtls__ecdsa__key__t_html_aa54efc762737c1b94eaebae1262d4221"><div class="ttname"><a href="structdtls__ecdsa__key__t.html#aa54efc762737c1b94eaebae1262d4221">dtls_ecdsa_key_t::pub_key_x</a></div><div class="ttdeci">const unsigned char * pub_key_x</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00066">dtls.h:66</a></div></div>
<div class="ttc" id="dtls_8h_html_a187f5e145bb869a732fbed426929a4e9"><div class="ttname"><a href="dtls_8h.html#a187f5e145bb869a732fbed426929a4e9">dtls_connect</a></div><div class="ttdeci">int dtls_connect(dtls_context_t *ctx, const session_t *dst)</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8c_source.html#l03862">dtls.c:3862</a></div></div>
<div class="ttc" id="dtls_8h_html_ae272fea7269714fe7a67d6da64961731"><div class="ttname"><a href="dtls_8h.html#ae272fea7269714fe7a67d6da64961731">dtls_handle_message</a></div><div class="ttdeci">int dtls_handle_message(dtls_context_t *ctx, session_t *session, uint8 *msg, int msglen)</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8c_source.html#l03591">dtls.c:3591</a></div></div>
<div class="ttc" id="structdtls__ecdsa__key__t_html"><div class="ttname"><a href="structdtls__ecdsa__key__t.html">dtls_ecdsa_key_t</a></div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00063">dtls.h:63</a></div></div>
<div class="ttc" id="dtls_8h_html_ab50d1ee589e91d07032d0a65768dee82"><div class="ttname"><a href="dtls_8h.html#ab50d1ee589e91d07032d0a65768dee82">dtls_check_retransmit</a></div><div class="ttdeci">void dtls_check_retransmit(dtls_context_t *context, clock_time_t *next)</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8c_source.html#l03957">dtls.c:3957</a></div></div>
<div class="ttc" id="state_8h_html"><div class="ttname"><a href="state_8h.html">state.h</a></div><div class="ttdoc">state information for DTLS FSM </div></div>
<div class="ttc" id="dtls_8h_html_a36eda3add5e2d12a3b5e2b6fe7038e01a53b5588e3c87ce19b1340baf193d130c"><div class="ttname"><a href="dtls_8h.html#a36eda3add5e2d12a3b5e2b6fe7038e01a53b5588e3c87ce19b1340baf193d130c">DTLS_PSK_HINT</a></div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00060">dtls.h:60</a></div></div>
<div class="ttc" id="global_8h_html_acdbfba15eb1a5692e177d582b4ca1583"><div class="ttname"><a href="global_8h.html#acdbfba15eb1a5692e177d582b4ca1583">DTLS_MAX_BUF</a></div><div class="ttdeci">#define DTLS_MAX_BUF</div><div class="ttdef"><b>Definition:</b> <a href="global_8h_source.html#l00064">global.h:64</a></div></div>
<div class="ttc" id="global_8h_html_ab27072920285996a3e16d2e5e3d366be"><div class="ttname"><a href="global_8h.html#ab27072920285996a3e16d2e5e3d366be">uint32</a></div><div class="ttdeci">unsigned char uint32[4]</div><div class="ttdef"><b>Definition:</b> <a href="global_8h_source.html#l00050">global.h:50</a></div></div>
<div class="ttc" id="dtls_8h_html_aa9ebc35a08295c2ae09d4248ba8e6456"><div class="ttname"><a href="dtls_8h.html#aa9ebc35a08295c2ae09d4248ba8e6456">dtls_client_hello_t</a></div><div class="ttdeci">dtls_client_hello_t</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00373">dtls.h:373</a></div></div>
<div class="ttc" id="structdtls__handler__t_html"><div class="ttname"><a href="structdtls__handler__t.html">dtls_handler_t</a></div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00084">dtls.h:84</a></div></div>
<div class="ttc" id="structdtls__context__t_html_ab37722ec6b82dd3120827812f212a51e"><div class="ttname"><a href="structdtls__context__t.html#ab37722ec6b82dd3120827812f212a51e">dtls_context_t::app</a></div><div class="ttdeci">void * app</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00237">dtls.h:237</a></div></div>
<div class="ttc" id="dtls_8h_html_a5676a0ceeeabd1ec38d378212f7af4a1"><div class="ttname"><a href="dtls_8h.html#a5676a0ceeeabd1ec38d378212f7af4a1">dtls_renegotiate</a></div><div class="ttdeci">int dtls_renegotiate(dtls_context_t *ctx, const session_t *dst)</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8c_source.html#l02956">dtls.c:2956</a></div></div>
<div class="ttc" id="dtls_8h_html_abd61d526ef995e63a6debfd8ddda9e98"><div class="ttname"><a href="dtls_8h.html#abd61d526ef995e63a6debfd8ddda9e98">dtls_hello_verify_t</a></div><div class="ttdeci">dtls_hello_verify_t</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00380">dtls.h:380</a></div></div>
<div class="ttc" id="dtls_8h_html_aa90f5eb6954137d5e098e29143c2586a"><div class="ttname"><a href="dtls_8h.html#aa90f5eb6954137d5e098e29143c2586a">dtls_close</a></div><div class="ttdeci">int dtls_close(dtls_context_t *ctx, const session_t *remote)</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8c_source.html#l01494">dtls.c:1494</a></div></div>
<div class="ttc" id="dtls_8h_html_a44ec206b1d84aa3d83281a92ed7cc238"><div class="ttname"><a href="dtls_8h.html#a44ec206b1d84aa3d83281a92ed7cc238">DTLS_COOKIE_SECRET_LENGTH</a></div><div class="ttdeci">#define DTLS_COOKIE_SECRET_LENGTH</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8h_source.html#l00071">dtls.h:71</a></div></div>
<div class="ttc" id="global_8h_html_a5e90b30856b81913af89565b55751da5"><div class="ttname"><a href="global_8h.html#a5e90b30856b81913af89565b55751da5">uint16</a></div><div class="ttdeci">unsigned char uint16[2]</div><div class="ttdef"><b>Definition:</b> <a href="global_8h_source.html#l00048">global.h:48</a></div></div>
<div class="ttc" id="dtls_8h_html_ad60bf1197fa1a074f91aed508cfefa62"><div class="ttname"><a href="dtls_8h.html#ad60bf1197fa1a074f91aed508cfefa62">dtls_connect_peer</a></div><div class="ttdeci">int dtls_connect_peer(dtls_context_t *ctx, dtls_peer_t *peer)</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8c_source.html#l03826">dtls.c:3826</a></div></div>
<div class="ttc" id="uthash_8h_html"><div class="ttname"><a href="uthash_8h.html">uthash.h</a></div></div>
<div class="ttc" id="dtls_8h_html_a4743f51c3197d290fc9a88e1f3a64928"><div class="ttname"><a href="dtls_8h.html#a4743f51c3197d290fc9a88e1f3a64928">dtls_write</a></div><div class="ttdeci">int dtls_write(struct dtls_context_t *ctx, session_t *session, uint8 *buf, size_t len)</div><div class="ttdef"><b>Definition:</b> <a href="dtls_8c_source.html#l00236">dtls.c:236</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Feb 27 2015 15:15:33 for tinydtls by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.6
</small></address>
</body>
</html>
